package com.itheima.edu.info.manager.service;

import com.itheima.edu.info.manager.dao.StudentDao;
import com.itheima.edu.info.manager.domain.Student;

public class StudentService {
    //1.创建Dao对象
    private StudentDao StudentDao = new StudentDao();

    //直接把新增的学生信息传给库换添加的方法
    public boolean addStudent(Student s) {
        //2.将学生对象传给Dao,并调用StudentDao的addStudent()方法
        //3.把接收到Dao的boolean类型的结果，返还给StudentController
        return StudentDao.addStudent(s);
    }

    //调用库管查看对象的方法，经自己遍历判断学生id是否存在的方法
    public boolean isExists(String id) {
        //1.收到客服的id后，需要定义对应的isExists方法，要明确返回值类型和参数
        //2.调用StudentDao.findAllStudent()的方法，并接受数组返回值。判断数组中id是否被占用（判断是业务逻辑该做的）
        Student[] s = StudentDao.findAllStudent();
        //2.1假设id数组中没被占用，false代表没占用，对应客服，因为还要返回给客服
        boolean flag = false;
        //2.2遍历数组，用于判断id是否占用
        for (int i = 0; i < s.length; i++) {
            Student s1 = s[i];//用相同的Student类型接受每一索引号里的元素
            if (s1 != null && s1.getId().equals(id)) {
                flag = true;
                break;
            }
        }
        return flag;
    }

    //调用库管查看数组中对象的方法
    public Student[] findAllStudent() {
        //1.调用库管对象的findAllStudent()方法，并用相同的Student类型接受数组。
        Student[] s = StudentDao.findAllStudent();

        //2.判断数组中是否有对象，有就返回地址，没有就返回null
        boolean flag = false;
        //2.1为什么每次都用这个方法做多一步，因为我试过，直接在for循环的if判断里返回，这个所在的方法是识别不到有返回值。

        //2.2遍历数组判断是否有空值
        for (int i = 0; i < s.length; i++) {
            Student temp = s[i];
            if(temp != null){
                flag = true;
            }
        }
        if(flag){
            return s;
        }else{
            return null;
        }
    }

    //调用库管删除学生方法的方法
    public void deleteStudentById(String id) {
        //业务逻辑不用干什么，告诉库管删除就就行。继续调用库管的删除方法，并传给它id
        StudentDao.deleteStudentById(id);
    }

    //把要替换的修生学号和新的学生对象传给库该替换的方法
    public void updateStudent(String id,Student news) {
    //接受客服传来的参数，旧学生id和新学生对象，直接传给库管处理替换
        StudentDao.updataStudent(id,news);
    }
}
